package actor

//IContext 包含了actor运行中的的上下文信息
type IContext interface {
	// 处理消息, 返回是否继续运行
	processMessage(message interface{}, sender *PID) bool

	// Actor 返回actor实例
	Actor() IActor

	//Tell 发送消息给指定pid的actor
	Tell(pid *PID, message interface{})

	// Watch 向要监视的actor注册
	Watch(pid *PID)

	// Unwatch 向要监视的actor反注册
	Unwatch(pid *PID)

	// Self 返回当前actor的pid
	Self() *PID

	// Parent 返回当前actor的父actor的pid
	Parent() *PID

	// Spawn 分配一个唯一name, 并根据props创建和启动一个新actor
	Spawn(props *Props) *PID

	// SpawnPrefix 分配一个带指定前缀的唯一name, 并根据props创建和启动一个新actor
	SpawnPrefix(props *Props, prefix string) *PID

	// SpawnNamed 根据props和name创建和启动一个新actor
	// ErrActorNameExists 如果名字重复会返回此错误
	SpawnNamed(props *Props, id string) (*PID, error)

	// Returns 返回以名字为键值的子actor的map
	Children() map[string]*PID

	// String 返回上下文的描述
	String() string
}
